<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="generator" content="ApiGen 2.6.0" />

	<title>Class DIFilterMap</title>

	<script type="text/javascript" src="resources/combined.js?428767200"></script>
	<script type="text/javascript" src="elementlist.js?4200546020"></script>
	<link rel="stylesheet" type="text/css" media="all" href="resources/style.css?2495970611" />

</head>

<body>
<div id="left">
	<div id="menu">
		<a href="index.html" title="Overview"><span>Overview</span></a>


		<div id="groups">
			<h3>Namespaces</h3>
			<ul>
				<li class="active"><a href="namespace-None.html">None</a>
						</li>
				<li><a href="namespace-PHP.html">PHP</a>
						</li>
			</ul>
		</div>

		<hr />


		<div id="elements">
			<h3>Classes</h3>
			<ul>
				<li><a href="class-DIBase.html">DIBase</a></li>
				<li><a href="class-DIConfig.html">DIConfig</a></li>
				<li><a href="class-DIContext.html">DIContext</a></li>
				<li><a href="class-DIContext_Inject.html">DIContext_Inject</a></li>
				<li><a href="class-DIDBConfig.html" class="invalid">DIDBConfig</a></li>
				<li><a href="class-DIDo.html">DIDo</a></li>
				<li><a href="class-DIEntity.html">DIEntity</a></li>
				<li><a href="class-DIError.html">DIError</a></li>
				<li><a href="class-DIErrorCode.html">DIErrorCode</a></li>
				<li><a href="class-DIEvent.html">DIEvent</a></li>
				<li class="active"><a href="class-DIFilterMap.html">DIFilterMap</a></li>
				<li><a href="class-DIFilterUtil.html">DIFilterUtil</a></li>
				<li><a href="class-DIInclude.html">DIInclude</a></li>
				<li><a href="class-DIIncludeConfig.html">DIIncludeConfig</a></li>
				<li><a href="class-DIInject.html">DIInject</a></li>
				<li><a href="class-DILet.html">DILet</a></li>
				<li><a href="class-DIModel.html">DIModel</a></li>
				<li><a href="class-DIModelUtil.html">DIModelUtil</a></li>
				<li><a href="class-DIMySQL.html">DIMySQL</a></li>
				<li><a href="class-DIRoute.html">DIRoute</a></li>
				<li><a href="class-DIRuntime.html">DIRuntime</a></li>
				<li><a href="class-DIRuntime_Imported.html">DIRuntime_Imported</a></li>
				<li><a href="class-DIService.html">DIService</a></li>
				<li><a href="class-DITpl.html">DITpl</a></li>
				<li><a href="class-DIUrlShell.html">DIUrlShell</a></li>
				<li><a href="class-Global1Filter.html">Global1Filter</a></li>
				<li><a href="class-Global2Filter.html">Global2Filter</a></li>
				<li><a href="class-Global3Filter.html">Global3Filter</a></li>
				<li><a href="class-OrekiUtil.html">OrekiUtil</a></li>
				<li><a href="class-TemplateDo.html">TemplateDo</a></li>
				<li><a href="class-Test.html">Test</a></li>
				<li><a href="class-TestDo.html">TestDo</a></li>
				<li><a href="class-TestInject.html">TestInject</a></li>
				<li><a href="class-TesttestDo.html">TesttestDo</a></li>
				<li><a href="class-XxxFilter.html">XxxFilter</a></li>
				<li><a href="class-YyyFilter.html">YyyFilter</a></li>
			</ul>

			<h3>Interfaces</h3>
			<ul>
				<li><a href="class-DIEvent_AppendFuncListener.html">DIEvent_AppendFuncListener</a></li>
				<li><a href="class-DIEvent_AppendVariableListener.html">DIEvent_AppendVariableListener</a></li>
				<li><a href="class-DIEvent_CallFuncListener.html">DIEvent_CallFuncListener</a></li>
				<li><a href="class-DIEvent_CallStaticFuncListener.html">DIEvent_CallStaticFuncListener</a></li>
				<li><a href="class-DIEvent_ClassCallListener.html">DIEvent_ClassCallListener</a></li>
				<li><a href="class-DIEvent_DestroyListener.html">DIEvent_DestroyListener</a></li>
				<li><a href="class-DIEvent_GetStaticVariableListener.html">DIEvent_GetStaticVariableListener</a></li>
				<li><a href="class-DIEvent_GetVariableListener.html">DIEvent_GetVariableListener</a></li>
				<li><a href="class-DIEvent_ObjCallListener.html">DIEvent_ObjCallListener</a></li>
				<li><a href="class-DIEvent_ObjCreateListener.html">DIEvent_ObjCreateListener</a></li>
				<li><a href="class-DIEvent_SetStaticVariableListener.html">DIEvent_SetStaticVariableListener</a></li>
				<li><a href="class-DIEvent_SetVariableListener.html">DIEvent_SetVariableListener</a></li>
				<li><a href="class-DIEventListener.html">DIEventListener</a></li>
				<li><a href="class-DIFilter.html">DIFilter</a></li>
				<li><a href="class-DIModelTemplate.html">DIModelTemplate</a></li>
			</ul>


			<h3>Exceptions</h3>
			<ul>
				<li><a href="class-DIException.html">DIException</a></li>
			</ul>


			<h3>Functions</h3>
			<ul>
				<li><a href="function-__autoload.html">__autoload</a></li>
				<li><a href="function-arg.html">arg</a></li>
				<li><a href="function-array_unset.html">array_unset</a></li>
				<li><a href="function-bt_page.html">bt_page</a></li>
				<li><a href="function-bt_shell_page.html">bt_shell_page</a></li>
				<li><a href="function-component_exist.html">component_exist</a></li>
				<li><a href="function-create_class.html">create_class</a></li>
				<li><a href="function-dump.html">dump</a></li>
				<li><a href="function-getip.html">getip</a></li>
				<li><a href="function-import.html">import</a></li>
				<li><a href="function-inject.html">inject</a></li>
				<li><a href="function-inject_dymic.html">inject_dymic</a></li>
				<li><a href="function-inject_full.html">inject_full</a></li>
				<li><a href="function-inject_func.html">inject_func</a></li>
				<li><a href="function-injectObjFunc.html">injectObjFunc</a></li>
				<li><a href="function-invoke_func.html">invoke_func</a></li>
				<li><a href="function-invoke_method.html">invoke_method</a></li>
				<li><a href="function-let.html">let</a></li>
				<li><a href="function-let_exists.html">let_exists</a></li>
				<li><a href="function-params_to_str.html">params_to_str</a></li>
				<li><a href="function-putjson.html">putjson</a></li>
				<li><a href="function-putjsonp.html">putjsonp</a></li>
				<li><a href="function-redirect.html">redirect</a></li>
				<li><a href="function-ref_arr.html">ref_arr</a></li>
				<li><a href="function-session.html">session</a></li>
				<li><a href="function-session_exists.html">session_exists</a></li>
				<li><a href="function-session_remove.html">session_remove</a></li>
				<li><a href="function-url.html">url</a></li>
			</ul>
		</div>
	</div>
</div>

<div id="splitter"></div>

<div id="right">
<div id="rightInner">
	<form id="search">
		<input type="hidden" name="cx" value="" />
		<input type="hidden" name="ie" value="UTF-8" />
		<input type="text" name="q" class="text" />
		<input type="submit" value="Search" />
	</form>

	<div id="navigation">
		<ul>
			<li>
				<a href="index.html" title="Overview"><span>Overview</span></a>
			</li>
			<li>
				<a href="namespace-None.html" title="Summary of None"><span>Namespace</span></a>
			</li>
			<li class="active">
<span>Class</span>			</li>
		</ul>
		<ul>
			<li>
				<a href="tree.html" title="Tree view of classes, interfaces, traits and exceptions"><span>Tree</span></a>
			</li>
		</ul>
		<ul>
		</ul>
	</div>

<div id="content" class="class">
	<h1>Class DIFilterMap</h1>


	<div class="description">
	
<p>过滤器分为全局过滤器和特定作用点过滤器
只对Do-Request有效，对Let-Request无效</p>

	</div>









	<div class="info">
		
		
		
		

				<b>Author:</b>
				ltre<br />
		<b>Located at</b> <a href="source-class-DIFilterMap.html#3" title="Go to source code">filtermap.php</a><br />
	</div>


	<table class="summary" id="methods">
	<caption>Methods summary</caption>
	<tr data-order="getNeedsMap" id="_getNeedsMap">

		<td class="attributes"><code>
			 public static
			
			
			</code>
		</td>

		<td class="name"><div>
		<a class="anchor" href="#_getNeedsMap">#</a>
		<code><a href="source-class-DIFilterMap.html#20" title="Go to source code">getNeedsMap</a>( )</code>

		<div class="description short">
			
		</div>

		<div class="description detailed hidden">
			





				<h4>Map</h4>
				<div class="list">
						需要过滤器的模块或方法，大小写敏感<br />
				</div>

		</div>
		</div></td>
	</tr>
	<tr data-order="getWithoutMap" id="_getWithoutMap">

		<td class="attributes"><code>
			 public static
			
			
			</code>
		</td>

		<td class="name"><div>
		<a class="anchor" href="#_getWithoutMap">#</a>
		<code><a href="source-class-DIFilterMap.html#39" title="Go to source code">getWithoutMap</a>( )</code>

		<div class="description short">
			
		</div>

		<div class="description detailed hidden">
			





				<h4>Map</h4>
				<div class="list">
						不需要过滤器的模块或方法，大小写敏感<br />
				</div>

		</div>
		</div></td>
	</tr>
	<tr data-order="getSpecialFilterSort" id="_getSpecialFilterSort">

		<td class="attributes"><code>
			 public static
			
			
			</code>
		</td>

		<td class="name"><div>
		<a class="anchor" href="#_getSpecialFilterSort">#</a>
		<code><a href="source-class-DIFilterMap.html#55" title="Go to source code">getSpecialFilterSort</a>( )</code>

		<div class="description short">
			
		</div>

		<div class="description detailed hidden">
			





				<h4>Sort</h4>
				<div class="list">
						获取过滤器执行的优先级 每个[Xx[/yy]]对应一组优先级配置
在同一组优先级配置中，下标越小（即越靠前），优先级越高
具体算法详见：DIFilterUtil::setSort() @ __filter.php<br />
				</div>

		</div>
		</div></td>
	</tr>
	<tr data-order="getDefaultFilterSort" id="_getDefaultFilterSort">

		<td class="attributes"><code>
			 public static
			
			
			</code>
		</td>

		<td class="name"><div>
		<a class="anchor" href="#_getDefaultFilterSort">#</a>
		<code><a href="source-class-DIFilterMap.html#71" title="Go to source code">getDefaultFilterSort</a>( )</code>

		<div class="description short">
			
		</div>

		<div class="description detailed hidden">
			





				<h4>Sort</h4>
				<div class="list">
						获取默认的过滤器执行优先级
当getSpecialFilterSort()没有配置[Xx[/yy]]对应的优先级配置时，
则采用此优先级配置<br />
				</div>

		</div>
		</div></td>
	</tr>
	<tr data-order="getGlobalFilters" id="_getGlobalFilters">

		<td class="attributes"><code>
			 public static
			
			
			</code>
		</td>

		<td class="name"><div>
		<a class="anchor" href="#_getGlobalFilters">#</a>
		<code><a href="source-class-DIFilterMap.html#84" title="Go to source code">getGlobalFilters</a>( )</code>

		<div class="description short">
			
		</div>

		<div class="description detailed hidden">
			





				<h4>Map</h4>
				<div class="list">
				</div>
				<h4>Sort</h4>
				<div class="list">
						获取全局过滤器，也获取过滤器优先级
这些过滤器对全局所有访问有效
如果需要指定例外项（如不需要全局过滤器的作用点），
则需自行在过滤器的构造方法内作限制，具体过程不作赘述。
默认例外项：DIUrlShell::$_default_shell指定值不执行全局过滤器
格式：名称 =&gt; 例外项集合 例外项格式：array('Xx/yy', 'Xx',
...)<br />
				</div>

		</div>
		</div></td>
	</tr>
	</table>







	<table class="summary" id="properties">
	<caption>Properties summary</caption>
	<tr data-order="need" id="$need">

		<td class="attributes"><code>
			public static
			boolean
		</code></td>

		<td class="name">
				<a href="source-class-DIFilterMap.html#10" title="Go to source code"><var>$need</var></a>
		</td>
		<td class="value"><code><span class="php-keyword1">true</span></code></td>
		<td class="description"><div>
			<a href="#$need" class="anchor">#</a>

			<div class="description short">
				
<p>true-需要, false-不需要
运行机制：执行某个XXDo::yyFunction()时，会在本类的两个Map【getNeedsMap和getWithoutMap】中扫描“XX/yy”已配置的过滤器需求。
从中找出需要和不需要的过滤器，如需要{A,B,C}，不需要{B,C,D}，
而后根据self::$need的值决定配置冲突的过滤器最终是否需要，如本例中冲突的有{B,C},则剔除之。
最终结果是{A}，算法与集合的减运算相同。</p>

			</div>

			<div class="description detailed hidden">
				
<p>true-需要, false-不需要
运行机制：执行某个XXDo::yyFunction()时，会在本类的两个Map【getNeedsMap和getWithoutMap】中扫描“XX/yy”已配置的过滤器需求。
从中找出需要和不需要的过滤器，如需要{A,B,C}，不需要{B,C,D}，
而后根据self::$need的值决定配置冲突的过滤器最终是否需要，如本例中冲突的有{B,C},则剔除之。
最终结果是{A}，算法与集合的减运算相同。</p>


			</div>
		</div></td>
	</tr>
	</table>



</div>

	<div id="footer">
		 API documentation generated by <a href="http://apigen.org">ApiGen 2.6.0</a>
	</div>
</div>
</div>
</body>
</html>
